#include <bits/stdc++.h>
#define endl "\n"
using namespace std;
const int maxn = 2*1e5+5;
long long n,a[maxn];
long long dp[maxn],pref[maxn];
long long ans;
void read()
{
cin >> n;
for(int i=1;i<=n;i++)
{
cin >> a[i];
}
reverse(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
dp[i] = dp[i-1] + (a[i]*(n-i+1));
pref[i] = pref[i-1] + a[i];
}
}
long long cost(int l, int r)
{
long long nz = dp[r] - dp[l-1];
nz -= (pref[r]-pref[l-1])*(n-r);
return nz;
}
void divide(int l, int r, int optl, int optr)
{
if(l>r) return;
int mid = (l+r)/2;
pair<long long, int> best = {-1000000000000000000,-1};
for(int i=optl;i<=min(mid,optr);i++)
{
long long pom = cost(i,mid);
if(pom>best.first) best = {pom,i};
}
//cout << best.first << " " << mid << endl;
ans = max(ans,best.first);
int opt = best.second;
divide(l,mid-1,optl,opt);
divide(mid+1,r,opt,optr);
}
void solve()
{
divide(1,n,1,n);
cout << ans << endl;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
read();
solve();
return 0;
}
/*
5
10 -3 -3 8 2
*/
628. Maximum Product of Three Numbers | 1526A - Mean Inequality |
1526B - I Hate 1111 | 1881. Maximum Value after Insertion |
237. Delete Node in a Linked List | 27. Remove Element |
39. Combination Sum | 378. Kth Smallest Element in a Sorted Matrix |
162. Find Peak Element | 1529A - Eshag Loves Big Arrays |
19. Remove Nth Node From End of List | 925. Long Pressed Name |
1051. Height Checker | 695. Max Area of Island |
402. Remove K Digits | 97. Interleaving String |
543. Diameter of Binary Tree | 124. Binary Tree Maximum Path Sum |
1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts | 501A - Contest |
160A- Twins | 752. Open the Lock |
1535A - Fair Playoff | 1538F - Interesting Function |
1920. Build Array from Permutation | 494. Target Sum |
797. All Paths From Source to Target | 1547B - Alphabetical Strings |
1550A - Find The Array | 118B - Present from Lena |